﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ddcCajamarca.BusinessEntities.Directorio;
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;

namespace ddcCajamarca.Repository.Mapping
{
    public class InfraestructuraMap : EntityTypeConfiguration<Infraestructura>
    {
        public InfraestructuraMap()
        {
            this.HasKey(c => c.Id);

            this.Property(c => c.Id)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            this.Property(c => c.IdOrganización)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

            this.Property(c => c.Ambientte)
                .HasMaxLength(150)
                .IsRequired();

            this.Property(c => c.Butacas)
                .IsOptional();

            this.Property(c => c.Pie)
                .IsOptional();

            this.Property(c => c.Graderias)
                .IsOptional();

            this.Property(c => c.EquiposVisuales)
                .HasMaxLength(100)
                .IsOptional();

            this.Property(c => c.EquiposAudio)
                .HasMaxLength(100)
                .IsOptional();

            this.Property(c => c.Aforo)
                .IsRequired();

            this.ToTable("DetalleInfraestructura");
            this.Property(c => c.Id).HasColumnName("Id");
            this.Property(c => c.IdOrganización).HasColumnName("IdOrganizacion");
            this.Property(c => c.Ambientte).HasColumnName("Ambientte");
            this.Property(c => c.Butacas).HasColumnName("Butacas");
            this.Property(c => c.Pie).HasColumnName("Pie");
            this.Property(c => c.Graderias).HasColumnName("Graderias");
            this.Property(c => c.EquiposVisuales).HasColumnName("EquiposVisuales");
            this.Property(c => c.EquiposAudio).HasColumnName("EquiposAudio");
            this.Property(c => c.Aforo).HasColumnName("Aforo");

            this.HasRequired(c => c.Organizacion)
                .WithMany(c => c.Infraestructura)
                .HasForeignKey(t => t.IdOrganización)
                .WillCascadeOnDelete(true);
        }
    }
}
